package com.wangc.algorithm.sort;

/**
 * @author wangC
 * @create 2020-07-07 下午10:38
 * @Description  冒泡排序
 **/
public class BubbleSort {

    private static void BubbleSort(int[] arr) {

        if (arr == null || arr.length < 2) {
            return;
        }
        // 0 - N-1
        // 0 - N-2
        // 0 - N-3
        for (int e = arr.length -1 ; e > 0; e--) {

            //0 1
            //1 2
            //2 3
            //e-1 e
            for (int i = 0; i< e;i++ ) {
                if (arr[i] > arr[i + 1]) {
                    swap(arr, i, i+1);
                }
            }

        }
    }


    public static void testBubbleSort1103(int[] arr) {
        if (arr == null || arr.length < 2) {
            return;
        }
        for (int i = arr.length - 1; i > 0; i--) {
            for (int j = 0; j < i; j++) {
                if (arr[j] > arr[j + 1]) {
                    swap(arr,j,j+1);
                }
            }
        }
    }

    public static void swap(int[] arr, int i, int j) {
        arr[i] = arr[i] ^ arr[j];
        arr[j] = arr[i] ^ arr[j];
        arr[i] = arr[i] ^ arr[j];
    }

    void maopao(int[] arr) {

        for (int e = arr.length-1 ; e>0; e--) {
            for (int i = 0 ; i<e;i++) {
                if (arr[i] > arr[i + 1]) {
                    swap(arr,i,i+1);
                }
            }
        }

    }

    // 0 , n-1 => 0,1  1,2 ... n-2,n-1
    // 0 , n-2
    void asd(int[] arr) {

        for (int e = arr.length-1 ; e >0 ; e--) {
            for (int i = 0; i<e ; i++) {
                if (arr[i] > arr[i + 1]) {
                    swap(arr, i, i + 1);
                }
            }
        }
    }

    void BubbleTest1(int[] arr) {
        for (int e = arr.length - 1; e > 0; e--) {
            for (int i = 0; i < e; i++) {
                if (arr[i] > arr[i + 1]) {
                    swap(arr,i,i+1);
                }
            }
        }
    }

    void BubbleTest2(int[] arr) {
        for (int i = arr.length - 1; i > 0; i--) {
            for (int j = 0; j < i; j++) {
                if (arr[j] > arr[j + 1]) {
                    swap(arr,j,j+1);
                }
            }
        }
    }

    void bubbleSortTest2(int[] arr) {
        for (int i = arr.length - 1; i > 0; i--) {
            for (int j = 0; j<i;j++) {
                if (arr[j] > arr[j + 1]) {
                    swap(arr, j, j + 1);
                }
            }
        }
    }

    void bubbleSortTest3(int[] arr) {
        for (int i = arr.length; i >0; i--) {
            for (int j = 0; j < i; j++) {
                if (arr[j] > arr[j + 1]) {
                    swap(arr,j,j+1);
                }
            }
        }
    }

    void bubbleSortTest44(int[] arr) {
        for (int i = arr.length - 1; i > 0; i--) {
            for (int j = 0; j < i  ; j++) {
                if (arr[j] > arr[j + 1]) {
                    swap(arr, j, j + 1);
                }
            }
        }
    }
}
